home *** CD-ROM | disk | FTP | other *** search
- MODULE IntuitionDemo;
-
- (* Dieses Demo veranschaulicht die Benutzung der Requester und Gadget *)
- (* Routinen aus dem Modul IntuitionSupport. Auf diesem Demo liegt *)
- (* kein Copyright! *)
-
- FROM SYSTEM IMPORT ADR,ASSEMBLE,ADDRESS;
- FROM IntuitionSupport IMPORT CreateSimpleWindow,GetRequester,GadgetsPtr,
- AddBorderBoolGadget,InitGadgetList,GadgetHandlePtr,
- GetBorder,FreeRequester,AddIntuiText,FreeBorder,
- RequestFlags,RequestFlagSet,GetRectBorder,GetImage,
- BoolGadgetFlagSet,BoolGadgetFlags,MessageType,
- stdFont,stdHeight,BorderPtr,DisplayAllGadgets,
- WaitForPossibleAction,FreeGadgetList,DeleteWindow,
- CreateSimpleScreen,DeleteScreen,FreeIntuiTextList,
- GetGadgetSelection,EndDMRequester,ExclIDCMPFlag,
- GetColorImage,AddImageBoolGadget,SetPropGadget,
- GetPropPosition,GetReqRastPort,AddPropGadget,
- PropGadgetFlags,PropGadgetFlagSet,NewGetRectBorder,
- InclIDCMPFlag;
- FROM IntuitionD IMPORT WindowPtr,RequesterPtr,IntuiTextPtr,ScreenPtr,
- IDCMPFlagSet,IDCMPFlags,WindowFlags,WindowFlagSet,
- ImagePtr;
- FROM IntuitionL IMPORT DrawBorder,DrawImage;
- FROM GraphicsD IMPORT FontStyleSet,jam2,jam1,RastPortPtr;
- FROM GraphicsL IMPORT LoadRGB4,SetRGB4,RectFill,SetAPen,Move,Text;
-
-
-
- (*$ EntryExitCode:=FALSE *)
- PROCEDURE Colors;
- BEGIN
- ASSEMBLE(
- DC.W $AAA,$FFF,$000,$C00,$F0F,$FF0,$F85,$0F0
- DC.W $72D,$7BF,$444,$666,$888,$CCC,$EEE,$FFF
- END);
- END Colors;
-
-
-
- VAR scr : ScreenPtr;
- win : WindowPtr;
- req : RequesterPtr;
- rp : RastPortPtr;
- glr,glw : GadgetHandlePtr;
- it : IntuiTextPtr;
- mt : MessageType;
- idcmp : IDCMPFlagSet;
- cim,sim : ImagePtr;
- im : ARRAY[0..2] OF ImagePtr;
- gf : ARRAY[0..15] OF GadgetsPtr;
- copy : ARRAY[0..15] OF CARDINAL;
- cm : POINTER TO ARRAY[0..15] OF CARDINAL;
- end : BOOLEAN;
- xr,xg,xb,yp : CARDINAL;
- id,t,actCol : INTEGER;
- gr,gg,gb,gc,go,gw : GadgetsPtr;
- border,bgad,bgads,bcol,bww1,bww2,bcgad,bcgads : BorderPtr;
-
-
-
- PROCEDURE SetPropGadgets(color : CARDINAL);
- BEGIN
- SetPropGadget(gr,16,0,1,0,(color DIV 256) MOD 16,0);
- SetPropGadget(gg,16,0,1,0,(color DIV 16) MOD 16,0);
- SetPropGadget(gb,16,0,1,0,color MOD 16,0);
- END SetPropGadgets;
-
-
-
- BEGIN
-
- scr:=CreateSimpleScreen(640,256,4,
- ADR("DMRequesterDemo IntuitionSupport © 1992 by Andre Wiethoff"),2);
-
- IF scr#NIL THEN
- border:=NewGetRectBorder(1,2,jam2,0,0,9,8,NIL);
- DrawBorder(ADR(scr^.rastPort),ADDRESS(border),100,100);
- FOR t:=0 TO 2 DO
- im[t]:=GetImage(ADR(scr^.rastPort),100,100,10,9,0,0,NIL);
- END;
- FreeBorder(border);
-
- win:=CreateSimpleWindow(0,0,640,256,NIL,
- WindowFlagSet{activate,borderless,backDrop},scr);
-
- cm:=scr^.viewPort.colorMap^.colorTable;
- LoadRGB4(ADR(scr^.viewPort),ADR(Colors),16);
-
- (* Die folgenden Befehle könnten durch den Befehl 'WriteText' aus *)
- (* dem Modul GraphicsSupport ersetzt werden. *)
- SetAPen(win^.rPort,1);
- Move(win^.rPort,120,50);
- Text(win^.rPort,ADR("Dieses Demo verwendet nur Kickstart V1.2 Routinen!"),50);
- Move(win^.rPort,140,60);
- Text(win^.rPort,ADR("Bitte doppelklicken Sie die rechte Maustaste!"),45);
-
- IF win#NIL THEN
- glw:=InitGadgetList(win,NIL,stdFont,stdHeight,FontStyleSet{});
- bww1:=NewGetRectBorder(1,2,jam2,-1,-1,160,30,NIL);
- bww2:=NewGetRectBorder(2,1,jam2,-1,-1,160,30,NIL);
- gw:=AddBorderBoolGadget(glw,240,100,160,30,400,bww1,bww2,
- BoolGadgetFlagSet{},jam1,1,0,"Beende Demo");
- DisplayAllGadgets(glw);
-
- border:=NewGetRectBorder(1,2,jam2,0,0,319,99,NIL);
- border:=NewGetRectBorder(2,1,jam2,220,74,307,92,border);
- border:=NewGetRectBorder(2,1,jam2,84,4,236,15,border);
- border:=NewGetRectBorder(2,1,jam2,64,19,205,29,border);
- border:=NewGetRectBorder(2,1,jam2,64,31,205,41,border);
- border:=NewGetRectBorder(2,1,jam2,64,43,205,53,border);
- border:=NewGetRectBorder(2,1,jam2,10,19,52,29,border);
- border:=NewGetRectBorder(2,1,jam2,10,31,52,41,border);
- border:=NewGetRectBorder(2,1,jam2,10,43,52,53,border);
-
- bgad:=NewGetRectBorder(1,2,jam2,-1,-1,91,32,NIL);
- bgads:=NewGetRectBorder(2,1,jam2,-1,-1,91,32,NIL);
- bcgad:=NewGetRectBorder(1,2,jam2,0,0,21,11,NIL);
- bcgads:=NewGetRectBorder(2,1,jam2,0,0,21,11,NIL);
-
- it:=AddIntuiText(88,6,1,0,jam2,NIL,"Color-DM-Requester",NIL);
- it:=AddIntuiText(20,21,1,0,jam2,NIL,"Rot",it);
- it:=AddIntuiText(16,33,1,0,jam2,NIL,"Grün",it);
- it:=AddIntuiText(16,45,1,0,jam2,NIL,"Blau",it);
-
- glr:=InitGadgetList(NIL,NIL,stdFont,stdHeight,FontStyleSet{});
- IF glr#NIL THEN
- actCol:=0;
- gr:=AddPropGadget(glr,65,20,140,9,100,im[0],NIL,PropGadgetFlagSet{
- pgFollow,pgBorderless},16,0,1,0,
- (cm^[actCol] DIV 256) MOD 16,0);
- gg:=AddPropGadget(glr,65,32,140,9,101,im[1],NIL,PropGadgetFlagSet{
- pgFollow,pgBorderless},16,0,1,0,
- (cm^[actCol] DIV 16) MOD 16,0);
- gb:=AddPropGadget(glr,65,44,140,9,102,im[2],NIL,PropGadgetFlagSet{
- pgFollow,pgBorderless},16,0,1,0,cm^[actCol] MOD 16,0);
- gc:=AddBorderBoolGadget(glr,10,60,91,32,200,bgad,bgads,
- BoolGadgetFlagSet{bgInversid},jam1,2,0,"CANCEL");
- gc:=AddBorderBoolGadget(glr,114,60,91,32,201,bgad,bgads,
- BoolGadgetFlagSet{bgInversid},jam1,2,0,"OK");
-
- cim:=NIL;
- FOR t:=0 TO 15 DO
- cim:=GetColorImage(20,10,(t MOD 4)*22+1,(t DIV 4)*12+1,t,cim);
- gf[t]:=AddBorderBoolGadget(glr,220+(t MOD 4)*22,19+(t DIV 4)*12,
- 20,10,300+t,bcgad,bcgads,
- BoolGadgetFlagSet{},jam1,2,0,"");
- END;
-
- req:=GetRequester(win,-160,-75,320,100,border,it,glr,NIL,
- RequestFlagSet{relDMRequester,noisy},0);
- IF req#NIL THEN
-
- FOR t:=0 TO 15 DO copy[t]:=cm^[t]; END;
- end:=FALSE;
- REPEAT
- mt:=WaitForPossibleAction(win,idcmp);
- CASE mt OF
- |otherStuff : GetPropPosition(gr,xr,yp); (* mouseMove *)
- GetPropPosition(gg,xg,yp);
- GetPropPosition(gb,xb,yp);
- SetRGB4(ADR(scr^.viewPort),actCol,xr,xg,xb);
- |requesterSet : rp:=GetReqRastPort(req);
- IF rp#NIL THEN (* !!! *)
- SetAPen(rp,actCol);
- RectFill(rp,221,75,306,91);
- DrawImage(rp,cim,220,19);
- END;
- |gadgetReleased : IF NOT GetGadgetSelection(win,id) THEN
- IF id<200 THEN
- GetPropPosition(gr,xr,yp);
- GetPropPosition(gg,xg,yp);
- GetPropPosition(gb,xb,yp);
- SetRGB4(ADR(scr^.viewPort),actCol,xr,xg,xb);
- ELSIF id=200 THEN
- LoadRGB4(ADR(scr^.viewPort),ADR(copy),16);
- SetPropGadgets(cm^[actCol]);
- ELSIF id=201 THEN
- EndDMRequester(req);
- FOR t:=0 TO 15 DO copy[t]:=cm^[t]; END;
- ELSIF (id>=300) AND (id<400) THEN
- actCol:=id-300;
- rp:=GetReqRastPort(req);
- IF rp#NIL THEN (* !!! *)
- SetAPen(rp,actCol);
- RectFill(rp,221,75,306,91);
- END;
- SetPropGadgets(cm^[actCol]);
- ELSIF id=400 THEN
- (* befindet sich im selben Window! *)
- EndDMRequester(req);
- end:=TRUE;
- END;
- END;
- ELSE
- END;
- UNTIL end;
- END;
- END;
- END;
- END;
-
- CLOSE
-
- FreeGadgetList(glw);
- FreeGadgetList(glr);
- FreeRequester(req);
- FreeIntuiTextList(it);
- DeleteWindow(win);
- DeleteScreen(scr);
-
- END IntuitionDemo.
-